package com.pattern.singleton;
/*
* 内部类单例模式 兼顾了饿汉模式的内存浪费，也兼顾了synchronized 性能问题
* 完美地屏蔽了这两个缺点
* */
public class LazySimpleSingleton2 {
    //默认使用 LazyInnerClassGeneral 的时候，会先初始化内部类
    //如果没使用的话，内部类是不加载的
    private LazySimpleSingleton2() {
        if(LazyHoder.LAZY!=null){
           throw new RuntimeException("不允许创建多个实例");
        }
    }

    //static 是为了使单例 的空间共享
    //保存这个方法不会被重写，重载
    public static final LazySimpleSingleton2 getInstance(){
        return LazyHoder.LAZY;
    }

    //默认不加载 内部类一定会在方法调用之前被调用
    private static class LazyHoder{
        private static final LazySimpleSingleton2 LAZY=new LazySimpleSingleton2();
    }

}
